﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Data.SqlClient;

using Padelcenter.Common;

namespace Padelcenter.DataAccess
{
    #region " SELECT "
    #region " Producto Select "
    public class Producto_Select : DataAccessBase
    {
        public Producto_Select()
        {
            StoredProcedureName = StoredProcedure.Name.Producto_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            Producto_Select_Prm producto_Select_Prm = new Producto_Select_Prm(this.Producto);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, producto_Select_Prm.Parameters);

            return ds;
        }

        private Producto _producto;

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }

    public class Producto_Select_Prm
    {
        public Producto_Select_Prm(Producto producto)
        {
            this.Producto = producto;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"         , this.Producto.IdProducto),
                new SqlParameter( "@idProductoPadre"    , this.Producto.IdProductoPadre),
                new SqlParameter( "@idTipoProducto"     , this.Producto.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idMarca"            , this.Producto.Marca.IdMarca),
                new SqlParameter( "@idDisponibilidad"   , this.Producto.Disponibilidad.IdDisponibilidad),
                new SqlParameter( "@ConFiltroActivo"    , this.Producto.ConFiltroActivo),
                new SqlParameter( "@Activo"             , this.Producto.Activo)
            };

            this.Parameters = parameters;
        }

        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }

        private Producto _producto;

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }

    #endregion

    #region " ProductoDesccripcion Select "
    public class ProductoDescripcion_Select : DataAccessBase
    {
        public ProductoDescripcion_Select()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoDescripcion_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoDescripcion_Select_Prm productoDescripcion_Select_Prm = new ProductoDescripcion_Select_Prm(this.ProductoDescripcion);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoDescripcion_Select_Prm.Parameters);

            return ds;
        }

        private ProductoDescripcion _productoDescripcion;

        public ProductoDescripcion ProductoDescripcion
        {
            get { return _productoDescripcion; }
            set { _productoDescripcion = value; }
        }
    }

    public class ProductoDescripcion_Select_Prm
    {
        public ProductoDescripcion_Select_Prm(ProductoDescripcion productoDescripcion)
        {
            this.ProductoDescripcion = productoDescripcion;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto" , this.ProductoDescripcion.Producto.IdProducto),
                new SqlParameter( "@idIdioma"   , this.ProductoDescripcion.Idioma.IdIdioma)
            };

            this.Parameters = parameters;
        }

        private ProductoDescripcion _productoDescripcion;

        public ProductoDescripcion ProductoDescripcion
        {
            get { return _productoDescripcion; }
            set { _productoDescripcion = value; }
        }

        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }

    #endregion

    #region " ProductoPropiedad Select "
    public class ProductoPropiedad_Select : DataAccessBase
    {
        public ProductoPropiedad_Select()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoPropiedad_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoPropiedad_Select_Prm productoPropiedad_Select_Prm = new ProductoPropiedad_Select_Prm(this.ProductoPropiedad);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoPropiedad_Select_Prm.Parameters);

            return ds;
        }

        ProductoPropiedad _productoPropiedad;

        public ProductoPropiedad ProductoPropiedad
        {
            get { return _productoPropiedad; }
            set { _productoPropiedad = value; }
        }
    }
    
    public class ProductoPropiedad_Select_Prm
    {
        public ProductoPropiedad_Select_Prm(ProductoPropiedad productoPropiedad)
        {
            this.ProductoPropiedad = productoPropiedad;
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"             , this.ProductoPropiedad.Producto.IdProducto),
                new SqlParameter( "@idPropiedad"            , this.ProductoPropiedad.Propiedad.IdPropiedad)
            };

            this.Parameters = parameters;
        }

        private ProductoPropiedad _productoPropiedad;

        public ProductoPropiedad ProductoPropiedad
        {
            get { return _productoPropiedad; }
            set { _productoPropiedad = value; }
        }
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #region " ProductoPrecio Select "
    public class ProductoPrecio_Select : DataAccessBase
    {
        public ProductoPrecio_Select()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoPrecio_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoPrecio_Select_Prm productoPrecio_Select_Prm = new ProductoPrecio_Select_Prm(this.ProductoPrecio);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoPrecio_Select_Prm.Parameters);

            return ds;
        }

        private ProductoPrecio _productoPrecio;

        public ProductoPrecio ProductoPrecio
        {
            get { return _productoPrecio; }
            set { _productoPrecio = value; }
        }
    }

    public class ProductoPrecio_Select_Prm
    {
        public ProductoPrecio_Select_Prm(ProductoPrecio productoPrecio)
        {
            this.ProductoPrecio = productoPrecio;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"             , this.ProductoPrecio.Producto.IdProducto),
                new SqlParameter( "@idZona"                 , this.ProductoPrecio.Zona.IdZona)
            };

            this.Parameters = parameters;
        }

        private ProductoPrecio _productoPrecio;
        private SqlParameter[] _parameters;

        public ProductoPrecio ProductoPrecio
        {
            get { return _productoPrecio; }
            set { _productoPrecio = value; }
        }
        
        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #region " ProductoMedia Select "
    public class ProductoMedia_Select : DataAccessBase
    {
        public ProductoMedia_Select() 
        {
            StoredProcedureName = StoredProcedure.Name.ProductoMedia_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoMedia_Select_Prm productoMedia_Select_Prm = new ProductoMedia_Select_Prm(this.ProductoMedia);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoMedia_Select_Prm.Parameters);

            return ds;
        }

        private ProductoMedia _productoMedia;

        public ProductoMedia ProductoMedia
        {
            get { return _productoMedia; }
            set { _productoMedia = value; }
        }

    }

    public class ProductoMedia_Select_Prm
    {
        public ProductoMedia_Select_Prm(ProductoMedia productoMedia)
        {
            this.ProductoMedia = productoMedia;
            this.BuildParams();
        }
        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"             , this.ProductoMedia.Producto.IdProducto),
                new SqlParameter( "@idMedia"                , this.ProductoMedia.Media.IdMedia),
                new SqlParameter( "@ConFiltroEsPrincipal"   , this.ProductoMedia.ConFiltroEsPrincipal),
                new SqlParameter( "@EsPrincipal"            , this.ProductoMedia.EsPrincipal)
            };

            this.Parameters = parameters;
        }

        private ProductoMedia _productoMedia;

        public ProductoMedia ProductoMedia
        {
            get { return _productoMedia; }
            set { _productoMedia = value; }
        }
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #endregion

    #region " INSERT "
    #region " Producto Insert "
    public class Producto_Insert : DataAccessBase
    {
        public Producto_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.Producto_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            Producto_Insert_Prm producto_Insert_Prm = new Producto_Insert_Prm(this.Producto);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, producto_Insert_Prm.Parameters);

            return ds;
        }

        private Producto _producto;

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }

    public class Producto_Insert_Prm
    {
        public Producto_Insert_Prm(Producto producto)
        {
            this.Producto = producto;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                
                new SqlParameter( "@idProductoPadre"    , this.Producto.IdProductoPadre),
                new SqlParameter( "@idTipoProducto"     , this.Producto.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idMarca"            , this.Producto.Marca.IdMarca),
                new SqlParameter( "@idDisponibilidad"   , this.Producto.Disponibilidad.IdDisponibilidad),
                new SqlParameter( "@Descripcion"        , this.Producto.Descripcion),
                new SqlParameter( "@Peso"               , this.Producto.Peso),
                new SqlParameter( "@Largo"              , this.Producto.Largo),
                new SqlParameter( "@Ancho"              , this.Producto.Ancho),
                new SqlParameter( "@Alto"               , this.Producto.Alto),
                new SqlParameter( "@EnvioCalculaPorPeso", this.Producto.EnvioCalculaPorPeso),
                new SqlParameter( "@Activo"             , this.Producto.Activo)
            };

            this.Parameters = parameters;
        }

        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }

        private Producto _producto;

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }

    #endregion

    #region " ProductoDesccripcion Insert "
    public class ProductoDescripcion_Insert : DataAccessBase
    {
        public ProductoDescripcion_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoDescripcion_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoDescripcion_Insert_Prm productoDescripcion_Insert_Prm = new ProductoDescripcion_Insert_Prm(this.ProductoDescripcion);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoDescripcion_Insert_Prm.Parameters);

            return ds;
        }

        private ProductoDescripcion _productoDescripcion;

        public ProductoDescripcion ProductoDescripcion
        {
            get { return _productoDescripcion; }
            set { _productoDescripcion = value; }
        }
    }

    public class ProductoDescripcion_Insert_Prm
    {
        public ProductoDescripcion_Insert_Prm(ProductoDescripcion productoDescripcion)
        {
            this.ProductoDescripcion = productoDescripcion;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto" , this.ProductoDescripcion.Producto.IdProducto),
                new SqlParameter( "@idIdioma"   , this.ProductoDescripcion.Idioma.IdIdioma),
                new SqlParameter( "@Nombre"     , this.ProductoDescripcion.Nombre),
                new SqlParameter( "@Descripcion", this.ProductoDescripcion.Descripcion)
            };

            this.Parameters = parameters;
        }

        private ProductoDescripcion _productoDescripcion;

        public ProductoDescripcion ProductoDescripcion
        {
            get { return _productoDescripcion; }
            set { _productoDescripcion = value; }
        }

        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }

    #endregion

    #region " ProductoPrecio Insert "
    public class ProductoPrecio_Insert : DataAccessBase
    {
        public ProductoPrecio_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoPrecio_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoPrecio_Insert_Prm productoPrecio_Insert_Prm = new ProductoPrecio_Insert_Prm(this.ProductoPrecio);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoPrecio_Insert_Prm.Parameters);

            return ds;
        }

        private ProductoPrecio _productoPrecio;

        public ProductoPrecio ProductoPrecio
        {
            get { return _productoPrecio; }
            set { _productoPrecio = value; }
        }
    }

    public class ProductoPrecio_Insert_Prm
    {
        public ProductoPrecio_Insert_Prm(ProductoPrecio productoPrecio)
        {
            this.ProductoPrecio = productoPrecio;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"             , this.ProductoPrecio.Producto.IdProducto),
                new SqlParameter( "@idZona"                 , this.ProductoPrecio.Zona.IdZona),
                new SqlParameter( "@Precio"                 , this.ProductoPrecio.Precio)
            };

            this.Parameters = parameters;
        }

        private ProductoPrecio _productoPrecio;
        private SqlParameter[] _parameters;

        public ProductoPrecio ProductoPrecio
        {
            get { return _productoPrecio; }
            set { _productoPrecio = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #region " ProductoPropiedad Insert "
    public class ProductoPropiedad_Insert : DataAccessBase
    {
        public ProductoPropiedad_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoPropiedad_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoPropiedad_Insert_Prm productoPropiedad_Insert_Prm = new ProductoPropiedad_Insert_Prm(this.ProductoPropiedad);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoPropiedad_Insert_Prm.Parameters);

            return ds;
        }

        ProductoPropiedad _productoPropiedad;

        public ProductoPropiedad ProductoPropiedad
        {
            get { return _productoPropiedad; }
            set { _productoPropiedad = value; }
        }
    }

    public class ProductoPropiedad_Insert_Prm
    {
        public ProductoPropiedad_Insert_Prm(ProductoPropiedad productoPropiedad)
        {
            this.ProductoPropiedad = productoPropiedad;
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"             , this.ProductoPropiedad.Producto.IdProducto),
                new SqlParameter( "@idPropiedad"            , this.ProductoPropiedad.Propiedad.IdPropiedad)
            };

            this.Parameters = parameters;
        }

        private ProductoPropiedad _productoPropiedad;

        public ProductoPropiedad ProductoPropiedad
        {
            get { return _productoPropiedad; }
            set { _productoPropiedad = value; }
        }
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #region " ProductoMedia Insert "
    public class ProductoMedia_Insert : DataAccessBase
    {
        public ProductoMedia_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoMedia_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoMedia_Insert_Prm productoMedia_Insert_Prm = new ProductoMedia_Insert_Prm(this.ProductoMedia);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoMedia_Insert_Prm.Parameters);

            return ds;
        }

        private ProductoMedia _productoMedia;

        public ProductoMedia ProductoMedia
        {
            get { return _productoMedia; }
            set { _productoMedia = value; }
        }

    }

    public class ProductoMedia_Insert_Prm
    {
        public ProductoMedia_Insert_Prm(ProductoMedia productoMedia)
        {
            this.ProductoMedia = productoMedia;
            this.BuildParams();
        }
        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"             , this.ProductoMedia.Producto.IdProducto),
                new SqlParameter( "@idMedia"                , this.ProductoMedia.Media.IdMedia),
                new SqlParameter( "@EsPrincipal"            , this.ProductoMedia.EsPrincipal)
            };

            this.Parameters = parameters;
        }

        private ProductoMedia _productoMedia;

        public ProductoMedia ProductoMedia
        {
            get { return _productoMedia; }
            set { _productoMedia = value; }
        }
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #endregion

    #region " UPDATE "

    #region " Producto UPDATE "
    public class Producto_Update : DataAccessBase
    {
        public Producto_Update()
        {
            StoredProcedureName = StoredProcedure.Name.Producto_UPDATE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            Producto_Update_Prm producto_Update_Prm = new Producto_Update_Prm(this.Producto);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, producto_Update_Prm.Parameters);

            return ds;
        }

        private Producto _producto;

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }

    public class Producto_Update_Prm
    {
        public Producto_Update_Prm(Producto producto)
        {
            this.Producto = producto;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"         , this.Producto.IdProducto),
                new SqlParameter( "@idProductoPadre"    , this.Producto.IdProductoPadre),
                new SqlParameter( "@idTipoProducto"     , this.Producto.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idMarca"            , this.Producto.Marca.IdMarca),
                new SqlParameter( "@idDisponibilidad"   , this.Producto.Disponibilidad.IdDisponibilidad),
                new SqlParameter( "@Descripcion"        , this.Producto.Descripcion),
                new SqlParameter( "@Peso"               , this.Producto.Peso),
                new SqlParameter( "@Largo"              , this.Producto.Largo),
                new SqlParameter( "@Ancho"              , this.Producto.Ancho),
                new SqlParameter( "@Alto"               , this.Producto.Alto),
                new SqlParameter( "@EnvioCalculaPorPeso", this.Producto.EnvioCalculaPorPeso),
                new SqlParameter( "@Activo"             , this.Producto.Activo)
            };

            this.Parameters = parameters;
        }

        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }

        private Producto _producto;

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }
    #endregion

    #region " Producto Descripcion UPDATE "
    public class ProductoDescripcion_Update : DataAccessBase
    {
        public ProductoDescripcion_Update()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoDescripcion_UPDATE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoDescripcion_Update_Prm productoDescripcion_Update_Prm = new ProductoDescripcion_Update_Prm(this.ProductoDescripcion);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoDescripcion_Update_Prm.Parameters);

            return ds;
        }

        private ProductoDescripcion _productoDescripcion;

        public ProductoDescripcion ProductoDescripcion
        {
            get { return _productoDescripcion; }
            set { _productoDescripcion = value; }
        }
    }

    public class ProductoDescripcion_Update_Prm
    {
        public ProductoDescripcion_Update_Prm(ProductoDescripcion productoDescripcion)
        {
            this.ProductoDescripcion = productoDescripcion;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto" , this.ProductoDescripcion.Producto.IdProducto),
                new SqlParameter( "@idIdioma"   , this.ProductoDescripcion.Idioma.IdIdioma),
                new SqlParameter( "@Nombre"     , this.ProductoDescripcion.Nombre),
                new SqlParameter( "@Descripcion", this.ProductoDescripcion.Descripcion)
            };

            this.Parameters = parameters;
        }

        private ProductoDescripcion _productoDescripcion;

        public ProductoDescripcion ProductoDescripcion
        {
            get { return _productoDescripcion; }
            set { _productoDescripcion = value; }
        }

        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #region " Producto Precio UPDATE "
    public class ProductoPrecio_Update : DataAccessBase
    {
        public ProductoPrecio_Update()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoPrecio_UPDATE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoPrecio_Update_Prm productoPrecio_Update_Prm = new ProductoPrecio_Update_Prm(this.ProductoPrecio);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoPrecio_Update_Prm.Parameters);

            return ds;
        }

        private ProductoPrecio _productoPrecio;

        public ProductoPrecio ProductoPrecio
        {
            get { return _productoPrecio; }
            set { _productoPrecio = value; }
        }
    }

    public class ProductoPrecio_Update_Prm
    {
        public ProductoPrecio_Update_Prm(ProductoPrecio productoPrecio)
        {
            this.ProductoPrecio = productoPrecio;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"             , this.ProductoPrecio.Producto.IdProducto),
                new SqlParameter( "@idZona"                 , this.ProductoPrecio.Zona.IdZona),
                new SqlParameter( "@Precio"                 , this.ProductoPrecio.Precio)
            };

            this.Parameters = parameters;
        }

        private ProductoPrecio _productoPrecio;
        private SqlParameter[] _parameters;

        public ProductoPrecio ProductoPrecio
        {
            get { return _productoPrecio; }
            set { _productoPrecio = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #region " Producto Media UPDATE "
    public class ProductoMedia_Update : DataAccessBase
    {
        public ProductoMedia_Update()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoMedia_UPDATE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoMedia_Update_Prm productoMedia_Update_Prm = new ProductoMedia_Update_Prm(this.ProductoMedia);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoMedia_Update_Prm.Parameters);

            return ds;
        }

        private ProductoMedia _productoMedia;

        public ProductoMedia ProductoMedia
        {
            get { return _productoMedia; }
            set { _productoMedia = value; }
        }

    }

    public class ProductoMedia_Update_Prm
    {
        public ProductoMedia_Update_Prm(ProductoMedia productoMedia)
        {
            this.ProductoMedia = productoMedia;
            this.BuildParams();
        }
        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"             , this.ProductoMedia.Producto.IdProducto),
                new SqlParameter( "@idMedia"                , this.ProductoMedia.Media.IdMedia),
                new SqlParameter( "@EsPrincipal"            , this.ProductoMedia.EsPrincipal)
            };

            this.Parameters = parameters;
        }

        private ProductoMedia _productoMedia;

        public ProductoMedia ProductoMedia
        {
            get { return _productoMedia; }
            set { _productoMedia = value; }
        }
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion 

    #endregion

    #region " DELETE "
    #region " Producto Propiedad DELETE "
    public class ProductoPropiedad_Delete : DataAccessBase
    {
        public ProductoPropiedad_Delete()
        {
            StoredProcedureName = StoredProcedure.Name.ProductoPropiedad_DELETE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            ProductoPropiedad_Delete_Prm productoPropiedad_Delete_Prm = new ProductoPropiedad_Delete_Prm(this.ProductoPropiedad);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, productoPropiedad_Delete_Prm.Parameters);

            return ds;
        }

        ProductoPropiedad _productoPropiedad;

        public ProductoPropiedad ProductoPropiedad
        {
            get { return _productoPropiedad; }
            set { _productoPropiedad = value; }
        }
    }

    public class ProductoPropiedad_Delete_Prm
    {
        public ProductoPropiedad_Delete_Prm(ProductoPropiedad productoPropiedad)
        {
            this.ProductoPropiedad = productoPropiedad;
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idProducto"             , this.ProductoPropiedad.Producto.IdProducto),
                new SqlParameter( "@idPropiedad"            , this.ProductoPropiedad.Propiedad.IdPropiedad)
            };

            this.Parameters = parameters;
        }

        private ProductoPropiedad _productoPropiedad;

        public ProductoPropiedad ProductoPropiedad
        {
            get { return _productoPropiedad; }
            set { _productoPropiedad = value; }
        }
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion
    #endregion
}
